"""
@Time : 2021/9/13 11:19 
@Author : 常雷
@File : t_6is和==.py 
@Software: PyCharm
"""
# is和==的区别
'''
    is  判断是的是内存地址
    ==  判断的是值
'''
lst1 = [1, 2, 3]
lst2 = [1, 2, 3]
print(lst1 is lst2)
print(lst1 == lst2)

# 字符串的驻留机制
s1 = "一个示例"
s2 = "一个示例"

print(s1 == s2)     # True
print(s1 is s2)     # True
"""
常用数据的驻留机制:

    布尔值, 小的数字, 字符串等在程序中使用非常频繁, 为了减少加载,保存的消耗,将一个地址的值多处引用
    
    字符串的驻留机制:
        创建字符串之前先看看前面有没有创建过一样的字符串, 有则直接引用(常量池), 没有再进行创建
        原因:字符串的不可改变性
    
    数字
        小的数字是直接引用底层创建好的, 大的数值才会创建新的
        -5到257的数据(常量池)
        

    python直接运行的不是一个常量池, 但是常量池有相同的默认部分(-5到257), 但是pycharm运行是一个脚本,公用一个常量池
    脚步文件运行的时候处理机制跟一步一步运行不一样
"""
print(id(1))
print(id(1))
print(id(254))
print(id(254))
print(id(255))
print(id(255))
a = 258
b = 258
print(a is b)

print('*'*50)

a = "aaa aaa"
b = "aaa aaa"
print(a is b)

c = 'aaaaaa'
d = 'aaaaaa'
print(c is d)
